【MySQL】論理演算 - 真偽値の演算と演算子
論理値に対する演算を論理演算と呼びます。
複数の論理値を1つの論理値として算出したり、論理値を反転することが可能です。
ここでは、論理演算について解説します。
検証環境
論理演算
論理演算は“論理値に対する演算”です。
演算結果として、1つの論理値(TRUE
/FALSE
)を算出します。
論理演算には論理積や論理和、排他的論理和、否定などの種類があります。
論理演算子
論理演算子は“論理演算の種類を表す記号”です。
次の表のように論理演算に対応した演算子があります。
演算 | 意味 | 演算子 | 構文 |
---|---|---|---|
論理積 | AとBの両方がTRUEならTRUE | AND , && |
A AND B , A && B |
論理和 | AとBのいずれかでもTRUEならTRUE | OR , || |
A OR B , A || B |
排他的論理和 | AとBの一方のみTRUEならTRUE | XOR |
A XOR B |
否定 | Aの論理値を反転 | NOT , ! |
NOT A , !A |
論理積(AND
, &&
)
論理積は“2つの論理値の両方がTRUE
の場合はTRUE
、それ以外をFALSE
とする演算”です。
言語化した場合、一般的には“かつ”を使って表現し“AかつBがTRUEの場合はTRUEとする”と要約します。
論理積の演算パターンは次の4つです。
A | B | 論理積 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
基本構文
A AND B
サンプル
mysql> SELECT TRUE AND TRUE, TRUE AND FALSE, FALSE AND TRUE, FALSE AND FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE AND TRUE | TRUE AND FALSE | FALSE AND TRUE | FALSE AND FALSE |
+---------------+----------------+----------------+-----------------+
| 1 | 0 | 0 | 0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)
&&
演算子でも同様の演算が可能です。
mysql> SELECT TRUE && TRUE, TRUE && FALSE, FALSE && TRUE, FALSE && FALSE;
+--------------+---------------+---------------+----------------+
| TRUE && TRUE | TRUE && FALSE | FALSE && TRUE | FALSE && FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 0 | 0 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)
論理和(OR
, ||
)
論理和は“2つの論理値の一方でもTRUE
の場合はTRUE
、それ以外はFALSE
とする演算”です。
言語化した場合、一般的には“または”を使って表現し“AまたはBがTRUEの場合はTRUEとする”と要約します。
論理和の演算パターンは次の4つです。
A | B | 論理和 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
基本構文
A OR B
サンプル
mysql> SELECT TRUE OR TRUE, TRUE OR FALSE, FALSE OR TRUE, FALSE OR FALSE;
+--------------+---------------+---------------+----------------+
| TRUE OR TRUE | TRUE OR FALSE | FALSE OR TRUE | FALSE OR FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 1 | 1 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set (0.00 sec)
また、||
演算子でも同様の演算が可能です。
mysql> SELECT TRUE || TRUE, TRUE || FALSE, FALSE || TRUE, FALSE || FALSE;
+--------------+---------------+---------------+----------------+
| TRUE || TRUE | TRUE || FALSE | FALSE || TRUE | FALSE || FALSE |
+--------------+---------------+---------------+----------------+
| 1 | 1 | 1 | 0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)
排他的論理和(XOR
)
排他的論理和は“2つの論理値の一方のみTRUE
の場合はTRUE
、それ以外はFALSE
とする演算”です。
一般的には言語化した場合、“AまたはBのいずれか一方のみTRUEの場合はTRUEとする”と要約します。
排他的論理和の演算パターンは次の4つです。
A | B | 排他的論理和 |
---|---|---|
true | true | false |
true | false | true |
false | true | true |
false | false | false |
基本構文
A XOR B
サンプル
mysql> SELECT TRUE XOR TRUE, TRUE XOR FALSE, FALSE XOR TRUE, FALSE XOR FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE XOR TRUE | TRUE XOR FALSE | FALSE XOR TRUE | FALSE XOR FALSE |
+---------------+----------------+----------------+-----------------+
| 0 | 1 | 1 | 0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)
否定(NOT
, !
)
否定は“論理値を反転する演算”です。
一般的には言語化した場合、“AがTRUE
ならFALSE
、AがFALSE
ならTRUE
とする”と要約します。
否定の演算パターンは次の2つです。
A | 否定 |
---|---|
true | false |
false | true |
基本構文
NOT A
サンプル
mysql> SELECT NOT TRUE, NOT FALSE;
+----------+-----------+
| NOT TRUE | NOT FALSE |
+----------+-----------+
| 0 | 1 |
+----------+-----------+
1 row in set (0.00 sec)
また、!
演算子でも同様の演算を行えます。
mysql> SELECT !TRUE, !FALSE;
+-------+--------+
| !TRUE | !FALSE |
+-------+--------+
| 0 | 1 |
+-------+--------+
1 row in set, 2 warnings (0.00 sec)